#============================================================
#	Take Item Button
#============================================================
# 获取到物品
#============================================================
# @datetime: 2022-5-11 21:10:27
#============================================================
extends Button


var _host: Player
var _current_item: BaseItem
var _items : Dictionary = {}
var _t : float = 0


#============================================================
#   Set/Get
#============================================================
func set_host(value: Node) -> void:
	_host = value

func set_item(item: BaseItem):
	_current_item = item
	if item:
		_items[item] = null
		rect_global_position = item.global_position + Vector2(-16, -32)
	visible = (_items.size() > 0)

func remove_item(item: BaseItem):
	_items.erase(item)
	if item == _current_item:
		if _items.size() > 0:
			# 找到最近的节点
			set_item(MathUtil.get_closest_in_nodes(
				_host.global_position, _items.keys()
			))
	visible = (_items.size() > 0)


#============================================================
#   内置
#============================================================
func _ready():
	set_host(owner)
	get_parent().call_deferred("remove_child", self)
	owner.get_parent().call_deferred("add_child", self)
	visible = false


func _process(delta : float):
	_t += delta
	if _t >= 0.2:
		_t = 0
		# 找到最近的节点
		if _items.size() > 0:
			set_item(MathUtil.get_closest_in_nodes(
				_host.global_position, _items.keys()
			))


func _pressed():
	if _current_item == null:
		return
	# 当前物品数据
	var item_data : Dictionary = _current_item.get_data()
	var type : String = item_data.get("type")
	match type:
		# 武器
		ItemBean.Type.WEAPON:
			var equipment_wrapper = WrapperHelper.get_equipment(Global.player)
			# 装备数据
			var loaded_data : Dictionary = equipment_wrapper.get_type_first_item(ItemBean.Type.WEAPON)
			if loaded_data:
#				Logger.info(self, ['替换掉上次的物品：', loaded_data])
				# 物品数据替换为正在装备的物品数据
				_current_item.set_data(loaded_data)
			else:
				_current_item.pickup()
				remove_item(_current_item)
			equipment_wrapper.load_item(item_data, item_data["type"])
		
		# 消耗品
		ItemBean.Type.CONSUMABLES:
			var property_wrapper = WrapperHelper.get_property(Global.player)
			property_wrapper.add_property_data(item_data)
			_current_item.pickup()
			remove_item(_current_item)
	

